BRCC (Branch if plus) \par
 Branch czyli skok. Jeśli w wyniku poprzedniej wykonanej operacji została ustawiona flaga N, to ma zostać wykonany skok do innego adresu.

\hypertarget{pagebrpl_sec_brplone}{}\section{Wykonywane operacje}\label{pagebrpl_sec_brplone}
1. Pobranie informacji o k: 
\begin{DoxyCodeInclude}
        int k_temp = (getMEMC(getPC()) & 0x0FFF);
        int8_t k = (k_temp & 0b001111111000) >> 3;

\end{DoxyCodeInclude}
 2. Sprawdzenie warunku ustawienia flagi N jeśli warunek jest spełniony to skok o k, jeśli nie to skok o 1 
\begin{DoxyCodeInclude}
        if( GetFlagRegisterStatus(FLAG_N) == 0) incPC_k(k);
        else incPC();

\end{DoxyCodeInclude}
\hypertarget{pagebrpl_sec_brpltwo}{}\section{Kod źródłowy funkcji}\label{pagebrpl_sec_brpltwo}

\begin{DoxyCodeInclude}
/*
================================================================================
        Plik: f_brpl.c
--------------------------------------------------------------------------------
        Autorzy: Piotr Zdunek, Mateusz Słowikowski, Krzysztof Wiąckowski
        Projekt:Model mikrokontrolera AVR
        Kompilator: avr-gcc-4.3.5
        Doc: doxygen 1.7.4
--------------------------------------------------------------------------------
        Zawiera:
--------------------------------------------------------------------------------
        Komentarze:
================================================================================
*/

#include "types.h"
#include "mem_abs.h"

/*TODO!!! Opis BRPL do poprawienia
 * Funkcja BRPL Branch if plus. Branch czyli skok. Jeśli w wyniku poprzedniej
 * wykonanej operacji została ustawiona flaga N, to ma być skok do innego adresu.
       Czyli ma być
 * Zwiększone PC k o k. K zawiera się w przedziale (-64,+64). Nie testowałem czy 
      działa do tyłu, ale
 * teoretycznie powinno.
 *
 * Przykład kodu assemblera, który testuje tę funkcję
 *
 * add r5,r6 ; r5 = 5,r6 = 9
 * branch przep
 * and r1,r2
 * and r2,r3
 * and r3,r4
 * ...
 * przep: nop
 * and r1,r2 <- test czy kolejna operacja się wykoan
 *
 */

void F_BRPL(void){

        #if DEBUG_MODE
                printf("Function BRPL.");
                printf("PC = %lx\n",getPC());
        #endif

//Pobranie wartości stałej skoku z instrukcji
        int k_temp = (getMEMC(getPC()) & 0x0FFF);

        #if DEBUG_MODE
                printf("k %lx\n",k_temp);
        #endif


        int8_t k = (k_temp & 0b001111111000) >> 3;

        #if DEBUG_MODE
                printf("k %d %x\n",k,k);
                SetFlagRegisterBit(FLAG_N);                                                                                     /
      /ustawienie flagi V na sztywno do testowania
        #endif
// Sprawdzenie warunku ustawienia flagi N
// jeśli warunek jest spełniony to skok o k
// jeśli nie to skok o 1
        if( GetFlagRegisterStatus(FLAG_N) == 0) incPC_k(k);
        else incPC();

        #if DEBUG_MODE
                printf("PC = %x\n",getPC());
        #endif
        //do teststów!!!!                                                                                               /
      /zwi�kszenie licznika rozkaz�w
        //setPC();
}
\end{DoxyCodeInclude}
 